home *** CD-ROM | disk | FTP | other *** search
- Coronado Enterprises C TUTOR July 7, 1986
-
- COMPILER.DOC file
-
- Notes on a few C compilers.
-
- It is assumed that you have a C compiler and that you have
- somehow learned to use it. Some helping hints are given below
- for some of the more popular compilers and even if your partic-
- ular compiler is not listed, some of the hints given for other
- compilers may help you with yours. Some standards do tend to
- exist within compilers and compiler writers tend to do things
- basically the same way. If notes are not given below about your
- compiler, we at Coronado Enterprises will be unable to help. We
- have listed notes on all of the compilers we have available for
- evaluation or use. These notes are not intended to be exhaustive
- or used as the basis for a final decision on your part to select
- a given compiler. Exhaustive notes and evaluations are given
- regularly in computer publications. If you are undecided as to
- which compiler you should use, you are directed to these.
-
- ******************************************************************
-
- The following compilers have been tested on all files in chapters
- 1 through 13 and the results are noted.
-
- 1. Aztec C86 version 3.20e (Commercial) This is a very capa-
- ble compiler that can do nearly anything you ask of it.
- Even so, it is still reasonably small and can easily be
- used with a dual floppy machine. It compiles very fast,
- but was not used enough to gain the experience to comment
- very much on it and its capabilities. It includes enough
- additional utilities that it seems to have no limit. The
- two smaller models were not available for evaluation at
- all. Due to the complete lack of an index in the documen-
- tation, and the fact that the documentation assumes a high
- level of proficiency in C, this system is not recommended
- for the beginner.
-
- 2. Datalight C compiler - version 1.15 This compiler is very
- inexpensive, but compiles very quickly to an unusually fast
- executing file compared to its price. However, it does not
- handle I/O properly, (the putchar() does not output to the
- monitor in programs that work with all other compilers), and
- it causes the system to crash following an attempt to link
- files with errors. Due to these oversights on the part of
- the compiler writer, this implementation is not recommended
- for any purpose. If these shortcomings are fixed in future
- releases, it will be a good system for use on a floppy only
- system because the files are small.
-
- 3. DeSmet C Compiler - version 2.51 This relatively inexpen-
- sive compiler does an excellent job, especially when consid-
- ering the price. It compiles very fast and results in fast
- executable files. It does some things in an unstandard way
- but all compilers do since there is no standard yet. This
- would be an excellent choice for beginning and for most of
- your programming needs. It is extremely easy to use.
-
- 4. Ecosoft C compiler - ver 3.11 & 3.13 This compiler sells for
- only $59.95 and is as complete a compiler as you can find if
- you only need a small memory model. Their small model uses
- 64K for program and another 64K for data, so the limitation
- is not very severe, and this compiler should meet nearly all
- of your needs. It does have one small problem that is being
- fixed for all future editions.
-
- During a telephone conversation with Ecosoft, they acknowl-
- edged the problem and told me if I would return the disks,
- they would update them after the problem was fixed. I did
- return them as they said, and they updated my disks to
- version 3.13, but with the problem still not fixed. Another
- phone call indicated that they had me listed for a free up-
- date when it was fixed. By the time you read this, I expect
- the problem to be history.
-
- The Ecosoft compiler is probably the best value of all comp-
- ilers tested here.
-
- 5. Lattice C compiler - version 2.15 This compiler has been
- replaced with version 3.00 below but since many copies were
- sold, it is very popular. If you have a choice, don't buy
- this one since there are far better compilers available for
- the money.
-
- 6. Lattice C compiler - version 3.00 This is a very capable
- compiler that still has the ability to be run conveniently
- with only two floppy disks. If you want a high end compiler
- to use on a dual floppy machine, this is probably your best
- choice. The documentation is nearly worthless, and you will
- be left with a mess trying to get it set up until you gain
- some experience programming in C.
-
- 7. Microsoft C compiler - version 3.0 This is absolutely the
- top of the line compiler and should be your choice if you
- will be engaged in very serious programming. It seems to
- have essentially no limitations except that a hard disk is
- required to use it due to the large files. The documen-
- tation that comes with this compiler is probably the best
- I have ever seen for any compiler for any machine. It is
- simply fantastic. It even has a complete definition of the
- C programming language.
-
- 8. MIX C compiler - version 1.0.0 This is an inexpensive,
- yet very capable compiler that comes highly recommended for
- the beginning C programmer because it is so easy to use.
- It was used to develop the vast majority of the example
- programs in this tutorial and it never failed to do any-
- thing that I called upon it to do. It does suffer one big
- problem however, and that is the fact that the resultant
- code is very slow running. It is probably about one tenth
- the speed of the others, unless you go to the trouble to
- use the speedup utility included with the compiler. Using
- it will get the speed up to nearly the speed of the other
- compilers. It is very simple to use and it would be the
- recommended compiler for use in learning to program in
- C, and especially if you are limited to floppies on your
- machine. It is definitely worth the $39.95 purchase price.
-
-
- ************** Aztec C86 version 3.20e (Commercial) *****************
-
- Note; The following suggested setup only uses the small memory and
- program model which is sufficient for nearly all of your
- programming needs. It is suggested that you simply use this
- configuration and as you gain experience with C, add some of
- the other features.
-
- (suggested floppy disk setup)
- Contents of Drive A
- COMMAND.COM
- CCL.BAT (as listed below)
- EDIT.COM (your editor, whatever you use)
- STDIO.H (From the Aztec disks)
- CTYPE.H (From the Aztec disks)
- *.C (the files you wish to compile)
-
- Contents of Drive B
- CC.EXE (from the Aztec disks)
- AS.EXE (from the Aztec disks, may need to move to a:)
- LN.EXE (from the Aztec disks)
- C.LIB (from the Aztec disks)
- M.LIB (from the Aztec disks)
-
- (suggested hard disk setup)
- Put all above files in one directory, and remove the references to
- drive B in the batch file below.
-
-
- (Start of batch file CCL.BAT)
- REM THIS IS THE AZTEC C COMPILER
- IF EXIST %1 GOTO ERROR
- EDIT %1.C
- B:CC %1.C
- IF ERRORLEVEL 1 GOTO CLERR
- B:LN %1.O B:M.LIB B:C.LIB
- IF ERRORLEVEL 1 GOTO CLERR
- %1
- PAUSE
- ERASE %1.O
- ERASE %1.EXE
- ERASE %1.BAK
- GOTO DONE
-
- :ERROR
- REM DO NOT INCLUDE THE .C EXTENSION
- PAUSE
- GOTO DONE
-
- :CLERR
- REM COMPILE OR LINK ERROR
- PAUSE
-
- :DONE
- (end of CCL.BAT file)
-
- The following problems were found when using the Aztec C86
- compiler on the files in chapters 1 through 13. The files
- included in chapter 14 were not compiled with this compiler.
-
- Chapter 5 - BACKWARD.C This compiler uses more than 8 characters
- of the variable name. Change both calls to the func-
- tion to read the same, forward_and_backward (lines
- 8 and 19).
-
- Chapter 9 - SINGLEIO.C No getch() function. The manual describes
- how to read in a character without waiting for the
- carriage return on pages "libov.19" through "libov.21".
- It is not a simple thing to do nor is it in any way
- standard (as compared to other systems). It will not
- be elaborated on here.
-
- Chapter 9 - BETTERIN.C No Getch() function. See above.
-
- Chapter 11 - UNION1.C The bytes have ff in high order bits if the
- MSB of the byte is on. Refer to text about this.
-
- Chapter 13 - BITOPS.C The bytes have ff in high order bits if the
- MSB of the byte is on. Refer to UNION1.C note.
-
- Chapter 13 - UPLOW.C Change function name to mix_up_the_chars.
-
-
-
- ************* DeSmet C Compiler - version 2.51 **********************
-
- Note; The following setup can be run on a single floppy system, but
- you may want to move some of the files to another drive.
-
- Contents of drive A
- COMMAND.COM
- C88.EXE (From the DeSmet disks)
- GEN.EXE (From the DeSmet disks)
- ASM88.EXE (From the DeSmet disks)
- STDIO.H (From the DeSmet disks)
- BIND.EXE (From the DeSmet disks)
- CSTDIO.S (From the DeSmet disks)
- CCL.BAT (As defined below)
-
- A hard disk setup would be the same.
-
- (Start of batch file CCL.BAT)
- REM DESMET C COMPILER
- IF EXIST %1 GOTO ERROR
- REM THE NEXT LINE CALLS WHATEVER EDITOR YOU USE
- EDIT %1.C
- C88 %1
- IF ERRORLEVEL 1 GOTO CLERR
- BIND %1
- IF ERRORLEVEL 1 GOTO CLERR
- %1
- PAUSE
- ERASE %1.EXE
- ERASE %1.BAK
- ERASE %1.O
- GOTO DONE
-
- :ERROR
- REM DO NOT INCLUDE THE .C EXTENSION
- PAUSE
- GOTO DONE
-
- :CLERR
- REM COMPILE OR LINK ERROR
- PAUSE
-
- :DONE
- (End of batch file CCL.BAT)
-
- Problems encountered with DeSmet C on files in chapters 1 - 13.
- The files in chapter 14 were not attempted with this compiler
- and will be left up to the user to try.
-
- Chapter 5 - BACKWARD.C This compiler uses more than eight charac-
- ters of the variable name. Change both calls to the
- function so they read the same, forward_and_backward
- (lines 8 and 19).
-
- Chapter 9 - SIMPLEIO.C The function getchar() reads in immediately
- which is different from all other compilers. The dis-
- cussion in the text therefore does not agree with this
- compilers operation.
-
- Chapter 9 - SINGLEIO.C There is no getch() function, but getchar()
- does what it is supposed to do. Sustitute getchar()
- for getch() in line 10 and remove the putchar(c) from
- the next line and the program will act as defined in
- the text.
-
- Chapter 9 - BETTERIN.C Same as for SINGLEIO.C above.
-
- Chapter 13 - CHARCLAS.C Remove the #include "ctype.h" from the
- second line. It is not needed with this compiler.
-
- Chapter 13 - UPLOW.C Remove the #include "ctype.h" from the second
- line. It is not needed with this compiler. Also change
- the function name to mix_up_the_chars because this com-
- piler uses more than 8 characters for a variable name.
-
-
-
- ************** Ecosoft C compiler - version 3.11 & 3.13 *************
-
- (recommended setup)
- Exactly as listed in the manual - The documentation is excellent and
- very clear. Only the hard disk setup was tested.
-
- (start of batch file used - CCL.BAT)
- IF EXIST %1 GOTO ERROR
- CED %1.C
- CC %1
- IF ERRORLEVEL 1 GOTO CLERR
- %1
- ERASE %1.EXE
- ERASE %1.OBJ
- ERASE %1.BAK
- GOTO DONE
-
- :ERROR
- REM DO NOT INCLUDE THE .C EXTENSION
- PAUSE
- GOTO DONE
-
- :CLERR
- REM COMPILE OR LINK ERROR
- PAUSE
-
- :DONE
- (end of batch file used)
-
-
- Required changes for use with Ecosoft C compiler - ver 3.11 & 3.13
-
- Note; During compilation of a few of the files you will get a small
- number of warnings. These warnings are obvious and are meant
- to be an aid to you in discovering possible errors in your code.
- One of the most obvious is when a floating point number is
- assigned to an integer. This is done as an illustration for
- you, but the compiler generates a warning and continues. The
- fact that this happens is a positve vote for this compiler.
-
- Chapter 5 - BACKWARD.C This compiler used more than 8 characters for
- a variable name. Change both calls to the function to
- read the same, forward_and_backward. (lines 8 and 19)
-
- Chapter 10 - READTEXT.C and READGOOD.C Both of these files use the
- function fscanf() and look for a -1 at the end of the
- file. The end of file does not return a -1 and the loop
- continues indefinitely. This is the compiler error
- mentioned before and they say they are fixing it.
- Recomendation; Do not use this construct at this time.
-
- Chapter 11 - UNION1.C The bytes have ff in the high order bits if
- the MSB is on. Refer to text about this.
-
- Chapter 12 - All three files. Add the line #include "malloc.h" to
- the beginning of each file. This will define the type
- of return malloc will generate and will allow the pro-
- grams to operate as described. Ecosoft is very picky
- about the constructs used, and requires the header to
- check for problems.
-
- Chapter 13 - BITOPS.C The bytes have ff in the high order bits if
- the MSB is on. Refer to text about this.
-
- Chapter 13 - UPLOW.C Change function name to mix_up_the_chars
-
- Chapter 14 - As of this writing, none of these files have been com-
- piled with this compiler.
-
-
-
- ************** Lattice C compiler - version 2.15 ********************
-
- Note; The following suggested setup only uses the small memory and
- program model which is sufficient for nearly all of your
- programming needs. It is suggested that you simply use this
- configuration and as you gain experience with C, add some of
- the other features.
-
- (suggested floppy disk setup)
- Contents of Drive A
- COMMAND.COM
- CCL.BAT (as listed below)
- EDIT.COM (your editor, whatever you use)
- STDIO.H (From the Lattice disks)
- DOS.H (From the Lattice disks)
- CTYPE.H (From the Lattice disks)
- *.C (the files you wish to compile)
- CS.OBJ (From the Lattice disks)
-
- Contents of Drive B
- LC1.EXE (From the Lattice disks)
- LC2.EXE (From the Lattice disks)
- LINK.EXE (From your DOS system disks)
- LCMS.LIB (From the Lattice disks)
- LCS.LIB (From the Lattice disks)
-
- (suggested hard disk setup)
- Put all above files in one directory, and remove the references to
- drive B in the batch file below.
-
-
- (start of batch file CCL.BAT)
- REM C COMPILER, LATTICE VERSION 2.15
- IF EXIST %1 GOTO EXTERR
- REM THE NEXT LINE CALLS WHATEVER SCREEN EDITOR YOU USE
- EDIT %1.C
- B:LC1 %1
- IF ERRORLEVEL 1 GOTO P2ABT
- B:LC2 %1
- IF ERRORLEVEL 1 GOTO WAIT
- REM THIS IS THE C LINKER
- B:LINK CS+%1,%1,NUL,B:LCMS+B:LCS;
- IF ERRORLEVEL 1 GOTO LKERFND
- REM THE NEXT LINE IS THE EXECUTION LINE
- %1
- PAUSE
- ERASE %1.EXE
- ERASE %1.OBJ
- ERASE %1.BAK
- GOTO DONE
-
- :EXTERR
- REM YOU PROBABLY INCLUDED THE .C EXTENTION, DO NOT INCLUDE IT
- REM IT WILL CAUSE THE LINKER STEP TO FAIL
- PAUSE
- GOTO DONE
-
- :LKERFND
- REM LINK ERROR(S) FOUND
- PAUSE
- GOTO DONE
-
- :P2ABT
- REM PASS 2 ABORTED DUE TO PASS 1 ERRORS
- PAUSE
- GOTO DONE
-
- :WAIT
- REM PASS 2 ERROR(S) FOUND
- PAUSE
- :DONE
- ( end of batch file used )
-
- The following problems were found when using the Lattice C
- compiler on the files included on this disk.
-
- All files - Warning: No STACK segment.
- This message occurs with every file, ignore it.
- It allows you to convert the resultant file to a
- *.COM file whick loads faster. (use EXE2BIN.EXE)
-
- Chapter 5 - FLOATSQ.C Warning 85: function return value mismatch
- This appears to be a bug in the compiler but it
- doesn't affect the operation of the program.
-
- Chapter 11 - NESTED.C Add the following line as the first line of
- the program to increase the internal stack size.
- int _stack = 4000;
-
- Chapter 11 - UNION1.C (This program doesn't work with this compiler)
- According to all of the rules for use of C, this
- file should work just like the text says. Compiling
- it and running it with the other compilers resulted
- in the following;
-
- C C 0
- 89AB AB 89
- 134A 4A 13
- 9CE9 E9 9C
- 2688 88 26
- B027 27 B0
- 39C6 C6 39
- C365 65 C3
- 4D04 4 4D
-
- Note; All files in Chapter 14 compile correctly with this compiler.
- To link the Visual Calculator use;
-
- link cs+vc+data+file+video,vc,,lcms+lcs;
-
-
-
- ************** Lattice C compiler - version 3.00 ********************
-
- Note; The following suggested setup only uses the small memory and
- program model which is sufficient for nearly all of your
- programming needs. It is suggested that you simply use this
- configuration and as you gain experience with C, add some of
- the other features.
-
- (suggested floppy disk setup)
- Contents of Drive A
- COMMAND.COM
- CCL.BAT (as listed below)
- EDIT.COM (your editor, whatever you use)
- STDIO.H (From the Lattice disks)
- DOS.H (From the Lattice disks)
- CTYPE.H (From the Lattice disks)
- *.C (the files you wish to compile)
- CS.OBJ (From the Lattice disks)
-
- Contents of Drive B
- LC1.EXE (From the Lattice disks)
- LC2.EXE (From the Lattice disks)
- LINK.EXE (must be IBM version 2.1 or later)
- LCMS.LIB (From the Lattice disks)
- LCS.LIB (From the Lattice disks)
-
- (suggested hard disk setup)
- Put all above files in one directory, and remove the references to
- drive B in the batch file below.
-
-
- (start of batch file CCL.BAT)
- REM C COMPILER, LATTICE VERSION 3.00
- IF EXIST %1 GOTO EXTERR
- REM THE NEXT LINE CALLS WHATEVER SCREEN EDITOR YOU USE
- EDIT %1.C
- B:LC1 %1
- IF ERRORLEVEL 1 GOTO P2ABT
- B:LC2 %1
- IF ERRORLEVEL 1 GOTO WAIT
- REM THIS IS THE C LINKER
- B:LINK CS+%1,%1,NUL,B:LCMS+B:LCS;
- IF ERRORLEVEL 1 GOTO LKERFND
- REM THE NEXT LINE IS THE EXECUTION CALL
- %1
- PAUSE
- ERASE %1.EXE
- ERASE %1.OBJ
- ERASE %1.BAK
- GOTO DONE
-
- :EXTERR
- REM YOU PROBABLY INCLUDED THE .C EXTENTION, DO NOT INCLUDE IT
- REM IT WILL CAUSE THE LINKER STEP TO FAIL
- PAUSE
- GOTO DONE
-
- :LKERFND
- REM LINK ERROR(S) FOUND
- PAUSE
- GOTO DONE
-
- :P2ABT
- REM PASS 2 ABORTED DUE TO PASS 1 ERRORS
- PAUSE
- GOTO DONE
-
- :WAIT
- REM PASS 2 ERROR(S) FOUND
- PAUSE
- :DONE
- ( end of batch file used )
-
- The following problems were found when using the Lattice C
- compiler (version 3.00) on the files included on this disk.
-
- Chapter 5 - FLOATSQ.C Warning 85: function return value mismatch
- This appears to be a bug in the compiler but it
- doesn't affect the operation of the program.
-
- Chapter 11 - NESTED.C Add the following line as the first line of
- the program to increase the internal stack size.
- int _stack = 4000;
-
- Chapter 11 - UNION1.C The bytes have ff in high order bits if
- the MSB of the byte is on. Refer to text about this.
-
- Chapter 13 - BITOPS.C The bytes have ff in high order bits if
- the MSB of the byte is on.
-
-
- ******************** Microsoft Version 3.00 *************************
-
- (recommended setup)
- Exactly as listed in the manual - The documentation for this compiler
- is very clear, and if you follow the instructions as given by Micro-
- soft, you will have no problem configuring your system.
-
- (start of batch file used )
- IF EXIST %1 GOTO NOEXT
- EDIT %1.C
- MSC %1;
- IF ERRORLEVEL 1 GOTO ERROR
- LINK %1;
- IF ERRORLEVEL 1 GOTO ERROR
- %1
- PAUSE
- ERASE %1.EXE
- ERASE %1.OBJ
- ERASE %1.BAK
- GOTO DONE
-
- :NOEXT
- REM DO NOT INCLUDE THE .C EXTENSION
- PAUSE
- GOTO DONE
-
- :ERROR
- REM COMPILE OR LINK ERROR FOUND
- PAUSE
-
- :DONE
- ( end of batch file )
-
- Note; The above batch file assumes a hard disk is being used.
- The Microsoft compiler is extremely capable but because
- of that, it is also very large and would be very diffi-
- cult to use without a hard disk. I would not recommend
- that you try to use this compiler unless you have a hard
- disk. It is possible to use with a floppy based system,
- but there would be much disk swapping leading to much
- frustation.
-
-
-
- Required changes for use with Microsoft C ver 3.0
-
- Chapter 5 - BACKWARD.C This compiler uses more than 8 characters
- of the variable name. Change both calls to the function
- to read the same, forward_and_backward (lines 8 and 19).
-
- Chapter 10 - READTEXT.C Apparently the system clears the buffer
- before reading into it, so it only outputs an extra
- blank line instead of the word "lines." as described
- in the text.
-
- Chapter 11 - READGOOD.C Notice that the extra blank line is not
- displayed here.
-
- Chapter 11 - NESTED.C *** STACK OVERFLOW ***
- This message occurs during running of the program
- due to a lack of stack space because nearly every
- C compiler defaults to a stack size of 2048 bytes.
- To fix it, change the LINK call to
- LINK %1 /STACK:4000;
- for this program only.
-
- Chapter 11 UNION1.C The bytes have ff in high order bits if
- the MSB of the byte is on. Refer to text about this.
-
- Chapter 13 UPLOW.C Change function name to mix_up_the_chars
-
- Chapter 13 BITOPS.C The bytes have ff in high order bits if
- the MSB of the byte is on.
-
- Chapter 14 LIST.C & LISTF.C Removing all references to the print
- file pointer "print_file_point" and using the standard
- predefined pointer "stdprn" for all print operations
- causes immediate print rather than bufferred print. The
- LIST.EXE on the distribution disk uses the standard
- pointer. The method of printing in the files is used
- by most C compilers, but the standard method may be a
- part of the upcoming ANSI standard.
-
- Chapter 14 VC.C, FILE.C, DATA.C, VIDEO.C, and STRUCT.DEF
- Remove all references to "prtfile" and use "stdprn" in
- lines 123 and 135 of VC.C and in line 170 of FILE.C to
- cause immediate printing instead of delayed buffered
- printing. The VC.EXE on the distribution disk was done
- this way and was compiled with the MS 3.00 C compiler.
- You can use the files as is if you don't mind the funny
- printing method.
-
- Note; To link VC.EXE use link vc+data+file+video;
-
-
-
- ************** MIX C compiler - version 1.0.0 ***********************
-
- (suggested floppy disk setup)
- Contents of Drive A
- COMMAND.COM
- CCL.BAT (as listed below)
- EDIT.COM (your editor, whatever you use)
- STDIO.H (copied from STDIO on dist diskette)
- RUNTIME.OVY (from your distribution diskette)
- SMALLCOM.OVY (from your distribution diskette)
- CLIB.MIX (from your distribution diskette)
- *.C (the files you wish to compile)
-
- Contents of Drive B
- Exact copy of your MIX distribution diskette
-
-
- (start of batch file used CCL.BAT)
- REM MIX C COMPILER
- REM THE NEXT LINE CALLS WHATEVER FULL SCREEN EDITOR YOU USE
- EDIT %1.C
- B:CC %1
- B:LINKER %1
- %1
- ( end of batch file used )
-
-
- Note; The following problems were noted when compiling the files
- in chapters 1 to 13 with this compiler. The files in
- chapter 14 were not compiled with this compiler.
-
- Chapter 9 - SINGLEIO.C The system supplies a Linefeed for you so
- it doesn't quite work like the book says.
-
- Chapter 9 - BETTERIN.C The system supplies a linefeed for you so
- it doesn't quite work like the book says.
-
- Chapter 13 - CHARCLAS.C Remove #include "ctype.h" from program.
-
- Chapter 13 - UPLOW.C Remove #include "ctype.h" from program.
-